﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SlideShow.Models;
using System.Web.Mvc;

namespace SlideShow.Controllers
{
    public class InscripController : Controller
    {

        CursosPortal.CursosClient cursoPortal = new CursosPortal.CursosClient();
        InscripcionAulaV.InscripcionAvServiceClient inscripcionAulaVirtual = new InscripcionAulaV.InscripcionAvServiceClient();

        private MdlCursos CursoServ_to_Curso(CursosPortal.Curso curso)
        {
            MdlCursos Curso = new MdlCursos { id = curso.id, nombre = curso.nombre, tipo = curso.tipo, responsable = curso.responsable, duracionHoras = curso.duracionHoras, preRequisito = curso.preRequisito };
            return Curso;

        }

        private List<MdlCursos> ListarCurso()
        {

            List<CursosPortal.Curso> lista_Curso = cursoPortal.listarCursos().ToList();

            List<MdlCursos> Lista_retorna = new List<MdlCursos>();
            foreach (CursosPortal.Curso element in lista_Curso)
            {
                Lista_retorna.Add(CursoServ_to_Curso(element));
            }
            return Lista_retorna;
        }

        private InscripcionAulaV.Inscripcion Inscrpcion_to_InscrpcionServ(Inscripcion inscripcion)
        {
            InscripcionAulaV.Inscripcion Inscripcion = new InscripcionAulaV.Inscripcion { id_inscripcion = inscripcion.id_inscripcion, id_curso = inscripcion.id_curso, nombre_curso = inscripcion.nombre_curso, email = inscripcion.email, duracionHoras = inscripcion.duracionHoras };

            return Inscripcion;

        }

        private Inscripcion InscrpcionServ_to_Inscrpcion(InscripcionAulaV.Inscripcion inscripcion)
        {
            Inscripcion Inscripcion = new Inscripcion { id_inscripcion = inscripcion.id_inscripcion, id_curso = inscripcion.id_curso, nombre_curso = inscripcion.nombre_curso, email = inscripcion.email, duracionHoras = inscripcion.duracionHoras };

            return Inscripcion;

        }

        private InscripcionAulaV.Inscripcion Inscripcion(Inscripcion inscripcion)
        {

            return inscripcionAulaVirtual.CrearInscripcion(Inscrpcion_to_InscrpcionServ(inscripcion));


        }

        public ActionResult Index()
        {

            List<InscripcionAulaV.Inscripcion> lista_inscripciones_serv = inscripcionAulaVirtual.ListarInscripcionesPorUsuario(User.Identity.Name).ToList();
            List<Inscripcion> lista_inscripciones_usuario = new List<Models.Inscripcion>();

            List<MdlCursos> lista_cursos = ListarCurso();
            ViewData["Cursos"] = lista_cursos;

            foreach (InscripcionAulaV.Inscripcion item in lista_inscripciones_serv)
            {
                item.nombre_curso = lista_cursos.Find(delegate(MdlCursos elemento) {
                    if (elemento.id == item.id_curso) 
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }).nombre;
                lista_inscripciones_usuario.Add(InscrpcionServ_to_Inscrpcion(item));
            }

            ViewData["Inscripciones"] = lista_inscripciones_usuario;

            

            return View();
        }

        [HttpPost]
        public ActionResult Index(FormCollection collection)
        {
            string idcurso = collection.GetValue("ddlcursos").AttemptedValue;

            Models.Inscripcion inscripcion = new Models.Inscripcion() { id_curso = Convert.ToInt32(idcurso), email = User.Identity.Name };
            Inscripcion(inscripcion);
            return RedirectToAction("Index");
        }


    }
}